package com.itheima.Controller;



import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

//@RequestMapping() 可以优化代码 下面调用这个路径的方法的（）里面的路径 都可以对其进行省略
@RequestMapping("/depts")

@Slf4j
@RestController
public class DeptController {
    @Autowired
    DeptService deptService;
    //查询全部信息
    @GetMapping
    public Result find(){
        log.debug("查询部门");
        List<Dept> allTo = deptService.list();
        return Result.success(allTo);
    }

    //删除操作
    @DeleteMapping
    public Result info(Integer id){
        //如果在logback.xml中不是用了比debug大/等于的级别 那么这个日志就不会输出
        log.debug("根据id删除部门, id: {}" , id );
        return Result.success(deptService.removeById(id));
    }

    //新增操作
    @PostMapping
    //@RequestBody可以将返回的JSON格式与方法参数名对应上
    public Result add(@RequestBody Dept dept){
        log.info("新增部门, dept: {}" , dept);
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());

        return Result.success(deptService.save(dept));
    }

    //修改操作 分为两步 1：数据回显  2.修改数据

    //1.数据回显
    @GetMapping("/{id}")
    public Result getById(@PathVariable("id") Integer id){
        log.info("根据ID查询, id: {}" , id);
        return Result.success(deptService.getById(id));
    }

    //2.修改数据 还需要把修改时间改一下 创建时间不要动
    @PutMapping
    public Result update(@RequestBody Dept dept){
        log.info("修改部门： dept: {}" ,dept);
        return Result.success(deptService.updateById(dept));
    }
}
